Cloud computing is an Information Technology (IT) paradigm that enables ubiquitous access to shared pools of configurable system resources and higher-level services that can be rapidly provisioned with minimal management effort, typically over the Internet. Cloud computing providers often permit companies who wish to distribute and operate cloud-based applications (“application providers”) to utilize centralized computing devices without the need for the individual companies to purchase or maintain their own resources.
When an application provider delivers an application into the cloud, however, each of the application provider's customers may have different requirements. In a public cloud scenario, it is often necessary for each customer to be treated the same. Hence it becomes difficult for a product to cater functionalities to each customer, and thus becomes difficult to keep each customer happy.
In the past there have been some attempts at solution to this problem using extensibilities, user-defined flows, and event-driven architecture. These help to at least give some options to the customer so the customer can implement the specific application instances on his or her own, by obtaining the callback as and when required.
The product may perform some processing and have the end result pushed to an external system. This external system is customer-specific. Thus, the original application can raise some events and the customer-specific application running on the external system can listen for those events and implement a custom implementation where data is pushed to an appropriate system.
The problem with such a solution is that each customer has to design a system that has to listen to events that the non-customized application raises, and implement the logic to do the same. The cost (in money and resources) in doing this causes many customers to hesitate to utilize such a solution.